<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArConfig Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArConfig.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArConfig-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArConfig Class Reference<div class="ingroups"><a class="el" href="group__OptionalClasses.html">Optional Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Stores configuration information which may be read to and from files or other sources.  
 <a href="classArConfig.html#details">More...</a></p>

<p><code>#include &lt;ArConfig.h&gt;</code></p>

<p>Inherits <a class="el" href="classArHasFileName.html">ArHasFileName</a>.</p>

<p>Inherited by <a class="el" href="classArRobotParams.html">ArRobotParams</a>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig_1_1ProcessFileCBType.html">ProcessFileCBType</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class's job is to make the two functor types largely look like the same one from the code's perspective, this is so we can store them both in the same map for order of operations purposes.  <a href="classArConfig_1_1ProcessFileCBType.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a53ccb6d333853bd2678b2c769eb82381"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a53ccb6d333853bd2678b2c769eb82381">addComment</a> (const char *comment, const char *sectionName=&quot;&quot;, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> priority=<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a11a1e48113dade987dbbc50383e13210">ArPriority::NORMAL</a>)</td></tr>
<tr class="memdesc:a53ccb6d333853bd2678b2c769eb82381"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command to add a new comment to the given section with given priority.  <a href="#a53ccb6d333853bd2678b2c769eb82381">More...</a><br /></td></tr>
<tr class="separator:a53ccb6d333853bd2678b2c769eb82381"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a064615aa0d26cb968a0ecf8fe9116f19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a064615aa0d26cb968a0ecf8fe9116f19"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a064615aa0d26cb968a0ecf8fe9116f19">addListNamesToParser</a> (const <a class="el" href="classArConfigArg.html">ArConfigArg</a> &amp;parent)</td></tr>
<tr class="memdesc:a064615aa0d26cb968a0ecf8fe9116f19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the children of the given parent arg to the config parser. <br /></td></tr>
<tr class="separator:a064615aa0d26cb968a0ecf8fe9116f19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3aa76dcf6fd83874dda8ccb577415e0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ad3aa76dcf6fd83874dda8ccb577415e0">addParam</a> (const <a class="el" href="classArConfigArg.html">ArConfigArg</a> &amp;arg, const char *sectionName=&quot;&quot;, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> priority=<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a11a1e48113dade987dbbc50383e13210">ArPriority::NORMAL</a>, const char *displayHint=NULL, <a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a> restart=ArConfigArg::NO_RESTART)</td></tr>
<tr class="memdesc:ad3aa76dcf6fd83874dda8ccb577415e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command to add a parameter to the given section with given priority.  <a href="#ad3aa76dcf6fd83874dda8ccb577415e0">More...</a><br /></td></tr>
<tr class="separator:ad3aa76dcf6fd83874dda8ccb577415e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1b2c398c46607755d767d6e04c544b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ae1b2c398c46607755d767d6e04c544b0">addParamAsIs</a> (const <a class="el" href="classArConfigArg.html">ArConfigArg</a> &amp;arg, const char *sectionName=&quot;&quot;)</td></tr>
<tr class="memdesc:ae1b2c398c46607755d767d6e04c544b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a parameter that has all the other information on it already set.  <a href="#ae1b2c398c46607755d767d6e04c544b0">More...</a><br /></td></tr>
<tr class="separator:ae1b2c398c46607755d767d6e04c544b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6632033992fd48cb2369350a749f0b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ab6632033992fd48cb2369350a749f0b8">addProcessFileCB</a> (<a class="el" href="classArRetFunctor.html">ArRetFunctor</a>&lt; bool &gt; *functor, int priority=0)</td></tr>
<tr class="memdesc:ab6632033992fd48cb2369350a749f0b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a callback to be invoked when the configuration is loaded or reloaded.  <a href="#ab6632033992fd48cb2369350a749f0b8">More...</a><br /></td></tr>
<tr class="separator:ab6632033992fd48cb2369350a749f0b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9fcb23c40efd909070710986437017f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ae9fcb23c40efd909070710986437017f">addProcessFileCB</a> (<a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *functor, int priority=0)</td></tr>
<tr class="memdesc:ae9fcb23c40efd909070710986437017f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a callback to be invoked when the configuration is loaded or reloaded....  <a href="#ae9fcb23c40efd909070710986437017f">More...</a><br /></td></tr>
<tr class="separator:ae9fcb23c40efd909070710986437017f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66c611ea024ce60cb6bdb0a653787cd5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a66c611ea024ce60cb6bdb0a653787cd5">addProcessFileWithErrorCB</a> (<a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *functor, int priority=0)</td></tr>
<tr class="memdesc:a66c611ea024ce60cb6bdb0a653787cd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a callback to be invoked when the configuration is loaded or reloaded, which may also receive error messages.  <a href="#a66c611ea024ce60cb6bdb0a653787cd5">More...</a><br /></td></tr>
<tr class="separator:a66c611ea024ce60cb6bdb0a653787cd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e501670b0155ff70f9a64f3d2950b8f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a1e501670b0155ff70f9a64f3d2950b8f">addSection</a> (const char *categoryName, const char *sectionName, const char *sectionDescription)</td></tr>
<tr class="memdesc:a1e501670b0155ff70f9a64f3d2950b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command to add a section and its description to the specified category.  <a href="#a1e501670b0155ff70f9a64f3d2950b8f">More...</a><br /></td></tr>
<tr class="separator:a1e501670b0155ff70f9a64f3d2950b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2479e354d0f69029993dac715a9447b7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a2479e354d0f69029993dac715a9447b7">addSectionFlags</a> (const char *sectionName, const char *flags)</td></tr>
<tr class="memdesc:a2479e354d0f69029993dac715a9447b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds a flag to a section  <a href="#a2479e354d0f69029993dac715a9447b7">More...</a><br /></td></tr>
<tr class="separator:a2479e354d0f69029993dac715a9447b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad406856b7e3b676ab99afc561dfffe7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad406856b7e3b676ab99afc561dfffe7e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ad406856b7e3b676ab99afc561dfffe7e">addSectionNotToParse</a> (const char *section)</td></tr>
<tr class="memdesc:ad406856b7e3b676ab99afc561dfffe7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a section for this config to always skip. <br /></td></tr>
<tr class="separator:ad406856b7e3b676ab99afc561dfffe7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf0b53be8ad35c4351396f86e36ebdbb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#acf0b53be8ad35c4351396f86e36ebdbb">ArConfig</a> (const char *baseDirectory=NULL, bool noBlanksBetweenParams=false, bool ignoreBounds=false, bool failOnBadSection=false, bool saveUnknown=true)</td></tr>
<tr class="memdesc:acf0b53be8ad35c4351396f86e36ebdbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#acf0b53be8ad35c4351396f86e36ebdbb">More...</a><br /></td></tr>
<tr class="separator:acf0b53be8ad35c4351396f86e36ebdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70bcd80359bcbc86e9da239558ff2a7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70bcd80359bcbc86e9da239558ff2a7d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a70bcd80359bcbc86e9da239558ff2a7d">ArConfig</a> (const <a class="el" href="classArConfig.html">ArConfig</a> &amp;config)</td></tr>
<tr class="memdesc:a70bcd80359bcbc86e9da239558ff2a7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a70bcd80359bcbc86e9da239558ff2a7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37c26aa78c1ae5ff479d99fd049dc975"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37c26aa78c1ae5ff479d99fd049dc975"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a37c26aa78c1ae5ff479d99fd049dc975">callProcessFileCallBacks</a> (bool continueOnError, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:a37c26aa78c1ae5ff479d99fd049dc975"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call the processFileCBs. <br /></td></tr>
<tr class="separator:a37c26aa78c1ae5ff479d99fd049dc975"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28e8a078925a43df626de565890268a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28e8a078925a43df626de565890268a2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a28e8a078925a43df626de565890268a2">clearAll</a> (void)</td></tr>
<tr class="memdesc:a28e8a078925a43df626de565890268a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears out all the section information and the processFileCBs. <br /></td></tr>
<tr class="separator:a28e8a078925a43df626de565890268a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fc3403ef7721a7b87bbd86e8f0df64a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fc3403ef7721a7b87bbd86e8f0df64a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a9fc3403ef7721a7b87bbd86e8f0df64a">clearAllValueSet</a> (void)</td></tr>
<tr class="memdesc:a9fc3403ef7721a7b87bbd86e8f0df64a"><td class="mdescLeft">&#160;</td><td class="mdescRight">calls clearValueSet on the whole config (internal for default configs) <br /></td></tr>
<tr class="separator:a9fc3403ef7721a7b87bbd86e8f0df64a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07d82d43b10c31de8c2352661ff02566"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07d82d43b10c31de8c2352661ff02566"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a07d82d43b10c31de8c2352661ff02566">clearSections</a> (void)</td></tr>
<tr class="memdesc:a07d82d43b10c31de8c2352661ff02566"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears out all the section information. <br /></td></tr>
<tr class="separator:a07d82d43b10c31de8c2352661ff02566"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c90627fe94113d7c66a9c2043f8b772"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c90627fe94113d7c66a9c2043f8b772"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a7c90627fe94113d7c66a9c2043f8b772">copyAndDetach</a> (const <a class="el" href="classArConfig.html">ArConfig</a> &amp;config)</td></tr>
<tr class="memdesc:a7c90627fe94113d7c66a9c2043f8b772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies the given config to this one, detaching any pointers so they are not shared. <br /></td></tr>
<tr class="separator:a7c90627fe94113d7c66a9c2043f8b772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4348c2978086ece1e47d90131f597aca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArConfigSection.html">ArConfigSection</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a4348c2978086ece1e47d90131f597aca">findSection</a> (const char *sectionName) const </td></tr>
<tr class="memdesc:a4348c2978086ece1e47d90131f597aca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the section with the given name.  <a href="#a4348c2978086ece1e47d90131f597aca">More...</a><br /></td></tr>
<tr class="separator:a4348c2978086ece1e47d90131f597aca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41ba185cbaf4e667e7505d188c9b21f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41ba185cbaf4e667e7505d188c9b21f7"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a41ba185cbaf4e667e7505d188c9b21f7">getBaseDirectory</a> (void) const </td></tr>
<tr class="memdesc:a41ba185cbaf4e667e7505d188c9b21f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the base directory. <br /></td></tr>
<tr class="separator:a41ba185cbaf4e667e7505d188c9b21f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbf388b729016e6751011557db8f932a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbf388b729016e6751011557db8f932a"></a>
std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#acbf388b729016e6751011557db8f932a">getCategoryNames</a> () const </td></tr>
<tr class="memdesc:acbf388b729016e6751011557db8f932a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the list of categories contained in this config. <br /></td></tr>
<tr class="separator:acbf388b729016e6751011557db8f932a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b4873a3ed8c942ade65f57d74b4118c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b4873a3ed8c942ade65f57d74b4118c"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a8b4873a3ed8c942ade65f57d74b4118c">getFileName</a> (void) const </td></tr>
<tr class="memdesc:a8b4873a3ed8c942ade65f57d74b4118c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the file name we loaded. <br /></td></tr>
<tr class="separator:a8b4873a3ed8c942ade65f57d74b4118c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab08de1bae2bec49c84d771c1ceec2e03"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab08de1bae2bec49c84d771c1ceec2e03"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ab08de1bae2bec49c84d771c1ceec2e03">getNoBlanksBetweenParams</a> (void)</td></tr>
<tr class="memdesc:ab08de1bae2bec49c84d771c1ceec2e03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether we have blanks between the params or not. <br /></td></tr>
<tr class="separator:ab08de1bae2bec49c84d771c1ceec2e03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01bb4ce72032fb4b167026936d8c30ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01bb4ce72032fb4b167026936d8c30ee"></a>
<a class="el" href="classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3">ArLog::LogLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a01bb4ce72032fb4b167026936d8c30ee">getProcessFileCallbacksLogLevel</a> (void)</td></tr>
<tr class="memdesc:a01bb4ce72032fb4b167026936d8c30ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the log level used when loading or reloading the configuration. <br /></td></tr>
<tr class="separator:a01bb4ce72032fb4b167026936d8c30ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a198f23beb37d96464f281ddd3c7c8d4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a198f23beb37d96464f281ddd3c7c8d4c"></a>
<a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a198f23beb37d96464f281ddd3c7c8d4c">getRestartLevelNeeded</a> (void) const </td></tr>
<tr class="memdesc:a198f23beb37d96464f281ddd3c7c8d4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the restart level needed. <br /></td></tr>
<tr class="separator:a198f23beb37d96464f281ddd3c7c8d4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a135f1d86f196b03bf9003e0b2160d5ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a135f1d86f196b03bf9003e0b2160d5ac"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a135f1d86f196b03bf9003e0b2160d5ac">getSaveUnknown</a> (void)</td></tr>
<tr class="memdesc:a135f1d86f196b03bf9003e0b2160d5ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets whether we save unknowns (if we don't save 'em we ignore 'em) <br /></td></tr>
<tr class="separator:a135f1d86f196b03bf9003e0b2160d5ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c030341d513526952f02c10c3bfddbc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c030341d513526952f02c10c3bfddbc"></a>
std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a1c030341d513526952f02c10c3bfddbc">getSectionNames</a> () const </td></tr>
<tr class="memdesc:a1c030341d513526952f02c10c3bfddbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the names of all sections in the config. <br /></td></tr>
<tr class="separator:a1c030341d513526952f02c10c3bfddbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22a15042a576239ca101acff6383361c"><td class="memItemLeft" align="right" valign="top">std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a22a15042a576239ca101acff6383361c">getSectionNamesInCategory</a> (const char *categoryName) const </td></tr>
<tr class="memdesc:a22a15042a576239ca101acff6383361c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the names of the sections that have been added to the specified category.  <a href="#a22a15042a576239ca101acff6383361c">More...</a><br /></td></tr>
<tr class="separator:a22a15042a576239ca101acff6383361c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840657ca55cd21642e6d4cd97b47d5b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a840657ca55cd21642e6d4cd97b47d5b9"></a>
std::list&lt; <a class="el" href="classArConfigSection.html">ArConfigSection</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a840657ca55cd21642e6d4cd97b47d5b9">getSections</a> (void)</td></tr>
<tr class="memdesc:a840657ca55cd21642e6d4cd97b47d5b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the sections themselves (use only if you know what to do) <br /></td></tr>
<tr class="separator:a840657ca55cd21642e6d4cd97b47d5b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2748411f686fe2ffaaa44d64c20a4cbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2748411f686fe2ffaaa44d64c20a4cbe"></a>
virtual <a class="el" href="classArConfig.html">ArConfig</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a2748411f686fe2ffaaa44d64c20a4cbe">getTranslator</a> () const </td></tr>
<tr class="memdesc:a2748411f686fe2ffaaa44d64c20a4cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the associated translator config, or NULL if none. <br /></td></tr>
<tr class="separator:a2748411f686fe2ffaaa44d64c20a4cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa61f1e6e522e34f40c067aee3d927fed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#aa61f1e6e522e34f40c067aee3d927fed">log</a> (bool isSummary=true, std::list&lt; std::string &gt; *sectionNameList=NULL, const char *logPrefix=&quot;&quot;)</td></tr>
<tr class="memdesc:aa61f1e6e522e34f40c067aee3d927fed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logs the config.  <a href="#aa61f1e6e522e34f40c067aee3d927fed">More...</a><br /></td></tr>
<tr class="separator:aa61f1e6e522e34f40c067aee3d927fed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d2d941247e59844fc10fddab6c489ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d2d941247e59844fc10fddab6c489ef"></a>
<a class="el" href="classArConfig.html">ArConfig</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a5d2d941247e59844fc10fddab6c489ef">operator=</a> (const <a class="el" href="classArConfig.html">ArConfig</a> &amp;config)</td></tr>
<tr class="memdesc:a5d2d941247e59844fc10fddab6c489ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <br /></td></tr>
<tr class="separator:a5d2d941247e59844fc10fddab6c489ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06f41407a74bbbb0b8a092c904bb8697"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a06f41407a74bbbb0b8a092c904bb8697">parseArgument</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:a06f41407a74bbbb0b8a092c904bb8697"><td class="mdescLeft">&#160;</td><td class="mdescRight">This parses the argument given (for parser or other use)  <a href="#a06f41407a74bbbb0b8a092c904bb8697">More...</a><br /></td></tr>
<tr class="separator:a06f41407a74bbbb0b8a092c904bb8697"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8590133f1fcd2070cac23686cc8ee8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8590133f1fcd2070cac23686cc8ee8d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#aa8590133f1fcd2070cac23686cc8ee8d">parseArgumentParser</a> (<a class="el" href="classArArgumentParser.html">ArArgumentParser</a> *parser, bool continueOnError=false, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:aa8590133f1fcd2070cac23686cc8ee8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use an argument parser to change the config. <br /></td></tr>
<tr class="separator:aa8590133f1fcd2070cac23686cc8ee8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e14491304e22ded38de8ffcc203035a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a3e14491304e22ded38de8ffcc203035a">parseFile</a> (const char *fileName, bool continueOnError=false, bool noFileNotFoundMessage=false, char *errorBuffer=NULL, size_t errorBufferLen=0, std::list&lt; std::string &gt; *sectionsToParse=NULL, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> highestPriority=ArPriority::FIRST_PRIORITY, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> lowestPriority=<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a174495be77df7662d7d909b1212e9409">ArPriority::LAST_PRIORITY</a>, <a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a> *restartLevelNeeded=NULL)</td></tr>
<tr class="memdesc:a3e14491304e22ded38de8ffcc203035a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a config file.  <a href="#a3e14491304e22ded38de8ffcc203035a">More...</a><br /></td></tr>
<tr class="separator:a3e14491304e22ded38de8ffcc203035a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ce331d00fb2f5fcbd7a44f2b8b5d310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ce331d00fb2f5fcbd7a44f2b8b5d310"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>parseListBegin</b> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer, size_t errorBufferLen)</td></tr>
<tr class="separator:a4ce331d00fb2f5fcbd7a44f2b8b5d310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a645c6930d2f0025b2a0344c80ab2511d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a645c6930d2f0025b2a0344c80ab2511d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>parseListEnd</b> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer, size_t errorBufferLen)</td></tr>
<tr class="separator:a645c6930d2f0025b2a0344c80ab2511d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17aa822b511bb3c919afb13bac4941b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17aa822b511bb3c919afb13bac4941b2"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a17aa822b511bb3c919afb13bac4941b2">parseResourceFile</a> (const char *fileName, bool continueOnError=true, char *errorBuffer=NULL, size_t errorBufferLen=0, std::list&lt; std::string &gt; *sectionsToParse=NULL)</td></tr>
<tr class="memdesc:a17aa822b511bb3c919afb13bac4941b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a config resource file, for translation. <br /></td></tr>
<tr class="separator:a17aa822b511bb3c919afb13bac4941b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e817551380c5661dcc068a8c07e715b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e817551380c5661dcc068a8c07e715b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a4e817551380c5661dcc068a8c07e715b">parseResourceFile</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *builder)</td></tr>
<tr class="memdesc:a4e817551380c5661dcc068a8c07e715b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a config resource file with parameters suitable for custom commands. <br /></td></tr>
<tr class="separator:a4e817551380c5661dcc068a8c07e715b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a632766d472027d18b36170bce1533133"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a632766d472027d18b36170bce1533133">parseSection</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:a632766d472027d18b36170bce1533133"><td class="mdescLeft">&#160;</td><td class="mdescRight">This parses the section change (for parser or other use)  <a href="#a632766d472027d18b36170bce1533133">More...</a><br /></td></tr>
<tr class="separator:a632766d472027d18b36170bce1533133"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3076e3e023252beaa5dfd808e014a335"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3076e3e023252beaa5dfd808e014a335"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a3076e3e023252beaa5dfd808e014a335">parseText</a> (const std::list&lt; std::string &gt; &amp;configLines, bool continueOnErrors=false, bool *parseOk=NULL, bool *processOk=NULL, char *errorBuffer=NULL, size_t errorBufferLen=0, std::list&lt; std::string &gt; *sectionsToParse=NULL, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> highestPriority=ArPriority::FIRST_PRIORITY, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> lowestPriority=<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a174495be77df7662d7d909b1212e9409">ArPriority::LAST_PRIORITY</a>, <a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a> *restartLevelNeeded=NULL)</td></tr>
<tr class="memdesc:a3076e3e023252beaa5dfd808e014a335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a set of text lines, in the same format as the config file. <br /></td></tr>
<tr class="separator:a3076e3e023252beaa5dfd808e014a335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeffee727cfec4250d5d5f56acb247c4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#aaeffee727cfec4250d5d5f56acb247c4">parseUnknown</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:aaeffee727cfec4250d5d5f56acb247c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This parses an unknown argument (so we can save it)  <a href="#aaeffee727cfec4250d5d5f56acb247c4">More...</a><br /></td></tr>
<tr class="separator:aaeffee727cfec4250d5d5f56acb247c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a598de25ed9d59eb7e286f516dcca2815"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a598de25ed9d59eb7e286f516dcca2815"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a598de25ed9d59eb7e286f516dcca2815">parseVersion</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *arg, char *errorBuffer=NULL, size_t errorBufferLen=0)</td></tr>
<tr class="memdesc:a598de25ed9d59eb7e286f516dcca2815"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses the config file version information. <br /></td></tr>
<tr class="separator:a598de25ed9d59eb7e286f516dcca2815"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af80da0483b51ee34e667b05a80bc2c4b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#af80da0483b51ee34e667b05a80bc2c4b">processFile</a> (void)</td></tr>
<tr class="memdesc:af80da0483b51ee34e667b05a80bc2c4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">for inheritors this is called after the file is processed  <a href="#af80da0483b51ee34e667b05a80bc2c4b">More...</a><br /></td></tr>
<tr class="separator:af80da0483b51ee34e667b05a80bc2c4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24bae355d4844872a3fc552bf7a17172"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24bae355d4844872a3fc552bf7a17172"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a24bae355d4844872a3fc552bf7a17172">removeAllUnsetSections</a> (void)</td></tr>
<tr class="memdesc:a24bae355d4844872a3fc552bf7a17172"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all values from sections in which no value has been set (internal) <br /></td></tr>
<tr class="separator:a24bae355d4844872a3fc552bf7a17172"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab515bea4f872eee0a6d6344cd6cbf296"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab515bea4f872eee0a6d6344cd6cbf296"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ab515bea4f872eee0a6d6344cd6cbf296">removeAllUnsetValues</a> (void)</td></tr>
<tr class="memdesc:ab515bea4f872eee0a6d6344cd6cbf296"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all unset values from the config (internal for default configs) <br /></td></tr>
<tr class="separator:ab515bea4f872eee0a6d6344cd6cbf296"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae17ad7fed68efa382e79d2cc4b4e12cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ae17ad7fed68efa382e79d2cc4b4e12cf">remProcessFileCB</a> (<a class="el" href="classArRetFunctor.html">ArRetFunctor</a>&lt; bool &gt; *functor)</td></tr>
<tr class="memdesc:ae17ad7fed68efa382e79d2cc4b4e12cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a processedFile callback.  <a href="#ae17ad7fed68efa382e79d2cc4b4e12cf">More...</a><br /></td></tr>
<tr class="separator:ae17ad7fed68efa382e79d2cc4b4e12cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a0b44d34a10b3acd9a97afadbcee2f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a5a0b44d34a10b3acd9a97afadbcee2f1">remProcessFileCB</a> (<a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *functor)</td></tr>
<tr class="memdesc:a5a0b44d34a10b3acd9a97afadbcee2f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a processedFile callback.  <a href="#a5a0b44d34a10b3acd9a97afadbcee2f1">More...</a><br /></td></tr>
<tr class="separator:a5a0b44d34a10b3acd9a97afadbcee2f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7795860c2b10aef1cd068fe46f417319"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a7795860c2b10aef1cd068fe46f417319">remSectionFlag</a> (const char *sectionName, const char *flag)</td></tr>
<tr class="memdesc:a7795860c2b10aef1cd068fe46f417319"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a flag from a section.  <a href="#a7795860c2b10aef1cd068fe46f417319">More...</a><br /></td></tr>
<tr class="separator:a7795860c2b10aef1cd068fe46f417319"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f104474342da23ef5d200d8fdf4924d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f104474342da23ef5d200d8fdf4924d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a0f104474342da23ef5d200d8fdf4924d">remSectionNotToParse</a> (const char *section)</td></tr>
<tr class="memdesc:a0f104474342da23ef5d200d8fdf4924d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a section for this config to always skip. <br /></td></tr>
<tr class="separator:a0f104474342da23ef5d200d8fdf4924d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a917e6d46f5bcb0f76e6cace1253191ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a917e6d46f5bcb0f76e6cace1253191ef"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a917e6d46f5bcb0f76e6cace1253191ef">resetRestartLevelNeeded</a> (void)</td></tr>
<tr class="memdesc:a917e6d46f5bcb0f76e6cace1253191ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the restart level needed. <br /></td></tr>
<tr class="separator:a917e6d46f5bcb0f76e6cace1253191ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f9d30c8911050b8d510837d27f3e067"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f9d30c8911050b8d510837d27f3e067"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a5f9d30c8911050b8d510837d27f3e067">setBaseDirectory</a> (const char *baseDirectory)</td></tr>
<tr class="memdesc:a5f9d30c8911050b8d510837d27f3e067"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the base directory. <br /></td></tr>
<tr class="separator:a5f9d30c8911050b8d510837d27f3e067"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace70d5cfc31b309c2c02100d3cbf28a4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ace70d5cfc31b309c2c02100d3cbf28a4">setConfigName</a> (const char *configName, const char *robotName=NULL)</td></tr>
<tr class="memdesc:ace70d5cfc31b309c2c02100d3cbf28a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores an optional config and robot name to be used in log messages.  <a href="#ace70d5cfc31b309c2c02100d3cbf28a4">More...</a><br /></td></tr>
<tr class="separator:ace70d5cfc31b309c2c02100d3cbf28a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab12a27f6afd07ea35e2013b49bc7cff1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab12a27f6afd07ea35e2013b49bc7cff1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ab12a27f6afd07ea35e2013b49bc7cff1">setNoBlanksBetweenParams</a> (bool noBlanksBetweenParams)</td></tr>
<tr class="memdesc:ab12a27f6afd07ea35e2013b49bc7cff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether we have blanks between the params or not. <br /></td></tr>
<tr class="separator:ab12a27f6afd07ea35e2013b49bc7cff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a948196938ca152e338133a66fd3416e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a948196938ca152e338133a66fd3416e4">setPermissions</a> (bool allowFactory=true, bool rememberUnknowns=true)</td></tr>
<tr class="memdesc:a948196938ca152e338133a66fd3416e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets permissions on some things.  <a href="#a948196938ca152e338133a66fd3416e4">More...</a><br /></td></tr>
<tr class="separator:a948196938ca152e338133a66fd3416e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a044b232d9a87fe3efbc33667c56bcc2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a044b232d9a87fe3efbc33667c56bcc2b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a044b232d9a87fe3efbc33667c56bcc2b">setProcessFileCallbacksLogLevel</a> (<a class="el" href="classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3">ArLog::LogLevel</a> level)</td></tr>
<tr class="memdesc:a044b232d9a87fe3efbc33667c56bcc2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the log level used when loading or reloading the configuration. <br /></td></tr>
<tr class="separator:a044b232d9a87fe3efbc33667c56bcc2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40dff42c002089873d68fc95f66adcdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40dff42c002089873d68fc95f66adcdc"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a40dff42c002089873d68fc95f66adcdc">setQuiet</a> (bool isQuiet)</td></tr>
<tr class="memdesc:a40dff42c002089873d68fc95f66adcdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turn on this flag to reduce the number of verbose log messages. <br /></td></tr>
<tr class="separator:a40dff42c002089873d68fc95f66adcdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5a5dff0ebf4bf80d0861d419b4ed45f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5a5dff0ebf4bf80d0861d419b4ed45f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ac5a5dff0ebf4bf80d0861d419b4ed45f">setSaveUnknown</a> (bool saveUnknown)</td></tr>
<tr class="memdesc:ac5a5dff0ebf4bf80d0861d419b4ed45f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether we save unknown items (if we don't save 'em we ignore 'em) <br /></td></tr>
<tr class="separator:ac5a5dff0ebf4bf80d0861d419b4ed45f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af464029663cdae8d46c20ad96536c801"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#af464029663cdae8d46c20ad96536c801">setSectionComment</a> (const char *sectionName, const char *comment)</td></tr>
<tr class="memdesc:af464029663cdae8d46c20ad96536c801"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the comment for a section.  <a href="#af464029663cdae8d46c20ad96536c801">More...</a><br /></td></tr>
<tr class="separator:af464029663cdae8d46c20ad96536c801"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c4d8dd913d29cd5ceab40e40ef79ccd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c4d8dd913d29cd5ceab40e40ef79ccd"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a7c4d8dd913d29cd5ceab40e40ef79ccd">setTranslator</a> (<a class="el" href="classArConfig.html">ArConfig</a> *xlatorConfig)</td></tr>
<tr class="memdesc:a7c4d8dd913d29cd5ceab40e40ef79ccd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an associate config that provides translations for each parameter (as read from a resource file). <br /></td></tr>
<tr class="separator:a7c4d8dd913d29cd5ceab40e40ef79ccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e01acebbebaf4f6c9dc01032c1016d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a9e01acebbebaf4f6c9dc01032c1016d2">useArgumentParser</a> (<a class="el" href="classArArgumentParser.html">ArArgumentParser</a> *parser)</td></tr>
<tr class="memdesc:a9e01acebbebaf4f6c9dc01032c1016d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses this argument parser after it parses a file before it processes.  <a href="#a9e01acebbebaf4f6c9dc01032c1016d2">More...</a><br /></td></tr>
<tr class="separator:a9e01acebbebaf4f6c9dc01032c1016d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3c8626c844828f2ce632cc7027a7a67"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#af3c8626c844828f2ce632cc7027a7a67">writeFile</a> (const char *fileName, bool append=false, std::set&lt; std::string &gt; *alreadyWritten=NULL, bool writeExtras=false, std::list&lt; std::string &gt; *sectionsToWrite=NULL, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> highestPriority=ArPriority::FIRST_PRIORITY, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> lowestPriority=<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a174495be77df7662d7d909b1212e9409">ArPriority::LAST_PRIORITY</a>)</td></tr>
<tr class="memdesc:af3c8626c844828f2ce632cc7027a7a67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write out a config file.  <a href="#af3c8626c844828f2ce632cc7027a7a67">More...</a><br /></td></tr>
<tr class="separator:af3c8626c844828f2ce632cc7027a7a67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab387604480907306e4d40baf384bca8b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab387604480907306e4d40baf384bca8b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ab387604480907306e4d40baf384bca8b">writeResourceFile</a> (const char *fileName, bool append=false, std::set&lt; std::string &gt; *alreadyWritten=NULL, std::list&lt; std::string &gt; *sectionsToWrite=NULL)</td></tr>
<tr class="memdesc:ab387604480907306e4d40baf384bca8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a config resource file, for translation. <br /></td></tr>
<tr class="separator:ab387604480907306e4d40baf384bca8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8d0136f8cec27a1212c7d87b69ec444"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8d0136f8cec27a1212c7d87b69ec444"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ae8d0136f8cec27a1212c7d87b69ec444">writeResourceFile</a> (<a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *builder)</td></tr>
<tr class="memdesc:ae8d0136f8cec27a1212c7d87b69ec444"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a config resource file with parameters suitable for custom commands. <br /></td></tr>
<tr class="separator:ae8d0136f8cec27a1212c7d87b69ec444"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abea211003bd8bc7ffec5651677660ec0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abea211003bd8bc7ffec5651677660ec0"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#abea211003bd8bc7ffec5651677660ec0">~ArConfig</a> ()</td></tr>
<tr class="memdesc:abea211003bd8bc7ffec5651677660ec0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:abea211003bd8bc7ffec5651677660ec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classArHasFileName"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classArHasFileName')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classArHasFileName.html">ArHasFileName</a></td></tr>
<tr class="memitem:a2d0d77e077c1bebae6c11282cbb19b24 inherit pub_methods_classArHasFileName"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d0d77e077c1bebae6c11282cbb19b24"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArHasFileName.html#a2d0d77e077c1bebae6c11282cbb19b24">ArHasFileName</a> ()</td></tr>
<tr class="memdesc:a2d0d77e077c1bebae6c11282cbb19b24 inherit pub_methods_classArHasFileName"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a2d0d77e077c1bebae6c11282cbb19b24 inherit pub_methods_classArHasFileName"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73b65fbf00f81d9ebfa143d5cff67d54 inherit pub_methods_classArHasFileName"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73b65fbf00f81d9ebfa143d5cff67d54"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArHasFileName.html#a73b65fbf00f81d9ebfa143d5cff67d54">ArHasFileName</a> (<a class="el" href="classArHasFileName.html">ArHasFileName</a> const &amp;)</td></tr>
<tr class="memdesc:a73b65fbf00f81d9ebfa143d5cff67d54 inherit pub_methods_classArHasFileName"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a73b65fbf00f81d9ebfa143d5cff67d54 inherit pub_methods_classArHasFileName"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b921521f0a8fc48c935f9ca6cc546be inherit pub_methods_classArHasFileName"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b921521f0a8fc48c935f9ca6cc546be"></a>
<a class="el" href="classArHasFileName.html">ArHasFileName</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArHasFileName.html#a0b921521f0a8fc48c935f9ca6cc546be">operator=</a> (<a class="el" href="classArHasFileName.html">ArHasFileName</a> const &amp;)</td></tr>
<tr class="memdesc:a0b921521f0a8fc48c935f9ca6cc546be inherit pub_methods_classArHasFileName"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <br /></td></tr>
<tr class="separator:a0b921521f0a8fc48c935f9ca6cc546be inherit pub_methods_classArHasFileName"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0740ec1dccd9fcb923ffd5ac69c2fccd inherit pub_methods_classArHasFileName"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0740ec1dccd9fcb923ffd5ac69c2fccd"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArHasFileName.html#a0740ec1dccd9fcb923ffd5ac69c2fccd">~ArHasFileName</a> ()</td></tr>
<tr class="memdesc:a0740ec1dccd9fcb923ffd5ac69c2fccd inherit pub_methods_classArHasFileName"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a0740ec1dccd9fcb923ffd5ac69c2fccd inherit pub_methods_classArHasFileName"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a2d1ab6907c77a26289e3498f1eda0822"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d1ab6907c77a26289e3498f1eda0822"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a2d1ab6907c77a26289e3498f1eda0822">toCategoryName</a> (const char *categoryName)</td></tr>
<tr class="memdesc:a2d1ab6907c77a26289e3498f1eda0822"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns NULL if category name is not one of the predefined constants. <br /></td></tr>
<tr class="separator:a2d1ab6907c77a26289e3498f1eda0822"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a8c9adb5583aeb6130f0505f76b75d8b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c9adb5583aeb6130f0505f76b75d8b0"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a8c9adb5583aeb6130f0505f76b75d8b0">CATEGORY_DEBUG</a> = &quot;Debug&quot;</td></tr>
<tr class="memdesc:a8c9adb5583aeb6130f0505f76b75d8b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to debug, including logging, replay, etc. <br /></td></tr>
<tr class="separator:a8c9adb5583aeb6130f0505f76b75d8b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e451f122ad94dd8ac406c1f34bbe058"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e451f122ad94dd8ac406c1f34bbe058"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a0e451f122ad94dd8ac406c1f34bbe058">CATEGORY_FLEET</a> = &quot;Enterprise&quot;</td></tr>
<tr class="memdesc:a0e451f122ad94dd8ac406c1f34bbe058"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to the fleet, enterprise manager, etc. <br /></td></tr>
<tr class="separator:a0e451f122ad94dd8ac406c1f34bbe058"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ed19449f219f48e1193f002f552e218"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ed19449f219f48e1193f002f552e218"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a4ed19449f219f48e1193f002f552e218">CATEGORY_ROBOT_INTERFACE</a> = &quot;Robot Interface&quot;</td></tr>
<tr class="memdesc:a4ed19449f219f48e1193f002f552e218"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to I/O, ARCL, display, network communication, etc. <br /></td></tr>
<tr class="separator:a4ed19449f219f48e1193f002f552e218"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b9f82d180f40c3cfb294d93803a2b8a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b9f82d180f40c3cfb294d93803a2b8a"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a7b9f82d180f40c3cfb294d93803a2b8a">CATEGORY_ROBOT_OPERATION</a> = &quot;Robot Operation&quot;</td></tr>
<tr class="memdesc:a7b9f82d180f40c3cfb294d93803a2b8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to robot behavior, docking, driving, navigation, etc. <br /></td></tr>
<tr class="separator:a7b9f82d180f40c3cfb294d93803a2b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5bc4d6758447fb03fd465e4769b3e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a5bc4d6758447fb03fd465e4769b3e4"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a7a5bc4d6758447fb03fd465e4769b3e4">CATEGORY_ROBOT_PHYSICAL</a> = &quot;Robot Physical&quot;</td></tr>
<tr class="memdesc:a7a5bc4d6758447fb03fd465e4769b3e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to the robot hardware and its sensors/accessories. <br /></td></tr>
<tr class="separator:a7a5bc4d6758447fb03fd465e4769b3e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac48c755ba762605c99136208b3523c9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac48c755ba762605c99136208b3523c9e"></a>
static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ac48c755ba762605c99136208b3523c9e">CATEGORY_SECURITY</a> = &quot;Security&quot;</td></tr>
<tr class="memdesc:ac48c755ba762605c99136208b3523c9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sections related to security. <br /></td></tr>
<tr class="separator:ac48c755ba762605c99136208b3523c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a1c18e4e161ab13da45053a0114d3f16a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c18e4e161ab13da45053a0114d3f16a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>addParserHandlers</b> (void)</td></tr>
<tr class="separator:a1c18e4e161ab13da45053a0114d3f16a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77a4f1c913bb5d07a74ba31656695169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a4f1c913bb5d07a74ba31656695169"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>copySectionsToParse</b> (std::list&lt; std::string &gt; *from)</td></tr>
<tr class="separator:a77a4f1c913bb5d07a74ba31656695169"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61ebd397104ea0a3438cb828684a630f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a61ebd397104ea0a3438cb828684a630f">removeAllUnsetValues</a> (bool isRemovingUnsetSectionsOnly)</td></tr>
<tr class="memdesc:a61ebd397104ea0a3438cb828684a630f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes unset values from the config.  <a href="#a61ebd397104ea0a3438cb828684a630f">More...</a><br /></td></tr>
<tr class="separator:a61ebd397104ea0a3438cb828684a630f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54c7c959f418302fc190f1ac7f70e174"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54c7c959f418302fc190f1ac7f70e174"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>remParserHandlers</b> (void)</td></tr>
<tr class="separator:a54c7c959f418302fc190f1ac7f70e174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dba320cdef22ae3a0f8e82d7cef35b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3dba320cdef22ae3a0f8e82d7cef35b0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>translateSection</b> (<a class="el" href="classArConfigSection.html">ArConfigSection</a> *section)</td></tr>
<tr class="separator:a3dba320cdef22ae3a0f8e82d7cef35b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cc699b7f26a88c18f1cdb7eee6b0a99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a2cc699b7f26a88c18f1cdb7eee6b0a99">writeSection</a> (<a class="el" href="classArConfigSection.html">ArConfigSection</a> *section, FILE *file, std::set&lt; std::string &gt; *alreadyWritten, bool writeExtras, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> highestPriority, <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> lowestPriority)</td></tr>
<tr class="memdesc:a2cc699b7f26a88c18f1cdb7eee6b0a99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write out a section.  <a href="#a2cc699b7f26a88c18f1cdb7eee6b0a99">More...</a><br /></td></tr>
<tr class="separator:a2cc699b7f26a88c18f1cdb7eee6b0a99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27b12a37c634f00269427d88717d75fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a27b12a37c634f00269427d88717d75fe">writeSectionResource</a> (<a class="el" href="classArConfigSection.html">ArConfigSection</a> *section, FILE *file, std::set&lt; std::string &gt; *alreadyWritten)</td></tr>
<tr class="memdesc:a27b12a37c634f00269427d88717d75fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write out a section in CSV format for translation.  <a href="#a27b12a37c634f00269427d88717d75fe">More...</a><br /></td></tr>
<tr class="separator:a27b12a37c634f00269427d88717d75fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a3b7711b7ef40ad98dc2040c71f47200b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b7711b7ef40ad98dc2040c71f47200b"></a>
<a class="el" href="classArArgumentParser.html">ArArgumentParser</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myArgumentParser</b></td></tr>
<tr class="separator:a3b7711b7ef40ad98dc2040c71f47200b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf861432fb29141f8d5cbd32b7786c28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf861432fb29141f8d5cbd32b7786c28"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myBaseDirectory</b></td></tr>
<tr class="separator:aaf861432fb29141f8d5cbd32b7786c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06dc10043408cdf9436ada387bac1505"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06dc10043408cdf9436ada387bac1505"></a>
std::map&lt; std::string, std::list&lt; std::string &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a06dc10043408cdf9436ada387bac1505">myCategoryToSectionsMap</a></td></tr>
<tr class="memdesc:a06dc10043408cdf9436ada387bac1505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map that defines the section names contained in each category. <br /></td></tr>
<tr class="separator:a06dc10043408cdf9436ada387bac1505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6327635a38724c621ee2543022abaa5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6327635a38724c621ee2543022abaa5e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myCheckingForRestartLevel</b></td></tr>
<tr class="separator:a6327635a38724c621ee2543022abaa5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f5d55dd3edbd0de0f84a60bd21aa8c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f5d55dd3edbd0de0f84a60bd21aa8c8"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a3f5d55dd3edbd0de0f84a60bd21aa8c8">myConfigName</a></td></tr>
<tr class="memdesc:a3f5d55dd3edbd0de0f84a60bd21aa8c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Optional name of the config instance. <br /></td></tr>
<tr class="separator:a3f5d55dd3edbd0de0f84a60bd21aa8c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ba8c9488ea0ef9df184b40670c5126e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ba8c9488ea0ef9df184b40670c5126e"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#a4ba8c9488ea0ef9df184b40670c5126e">myConfigVersion</a></td></tr>
<tr class="memdesc:a4ba8c9488ea0ef9df184b40670c5126e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version information read from config file. <br /></td></tr>
<tr class="separator:a4ba8c9488ea0ef9df184b40670c5126e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7f71f433e4657bad83cfb4763cd6af9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7f71f433e4657bad83cfb4763cd6af9"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>myCsvSeparatorChar</b></td></tr>
<tr class="separator:aa7f71f433e4657bad83cfb4763cd6af9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adad3211d1c09b58836545916e0b79673"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adad3211d1c09b58836545916e0b79673"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myDuplicateParams</b></td></tr>
<tr class="separator:adad3211d1c09b58836545916e0b79673"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad15904b3f207007ae6f406301221b7e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad15904b3f207007ae6f406301221b7e5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myFailOnBadSection</b></td></tr>
<tr class="separator:ad15904b3f207007ae6f406301221b7e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91684335e36c2aa105903832f0f3ef72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91684335e36c2aa105903832f0f3ef72"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myFileName</b></td></tr>
<tr class="separator:a91684335e36c2aa105903832f0f3ef72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab52846407315d26ca8d0d41129f4904c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab52846407315d26ca8d0d41129f4904c"></a>
<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myHighestPriorityToParse</b></td></tr>
<tr class="separator:ab52846407315d26ca8d0d41129f4904c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f631b5aff3800e5b41ba50989f3b7e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f631b5aff3800e5b41ba50989f3b7e8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myIgnoreBounds</b></td></tr>
<tr class="separator:a4f631b5aff3800e5b41ba50989f3b7e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34adc0ab10e8798fffb76498a1c03318"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34adc0ab10e8798fffb76498a1c03318"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myIsParsingListBroken</b></td></tr>
<tr class="separator:a34adc0ab10e8798fffb76498a1c03318"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66638afadb1cf6e549c1578b10bc486d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66638afadb1cf6e549c1578b10bc486d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myIsQuiet</b></td></tr>
<tr class="separator:a66638afadb1cf6e549c1578b10bc486d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97e368c6fa483ad500be40aa6b456a96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97e368c6fa483ad500be40aa6b456a96"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myListBeginCB</b></td></tr>
<tr class="separator:a97e368c6fa483ad500be40aa6b456a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee79dfee3ffd48b1c5e67c21ce8e33fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee79dfee3ffd48b1c5e67c21ce8e33fd"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myListEndCB</b></td></tr>
<tr class="separator:aee79dfee3ffd48b1c5e67c21ce8e33fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8c69ef2a1032fedf1055c91bef610f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8c69ef2a1032fedf1055c91bef610f3"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ae8c69ef2a1032fedf1055c91bef610f3">myLogPrefix</a></td></tr>
<tr class="memdesc:ae8c69ef2a1032fedf1055c91bef610f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prefix to be inserted in log messages (contains the robot and config names). <br /></td></tr>
<tr class="separator:ae8c69ef2a1032fedf1055c91bef610f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c15c60a0973612763ef49014ac04f05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c15c60a0973612763ef49014ac04f05"></a>
<a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLowestPriorityToParse</b></td></tr>
<tr class="separator:a0c15c60a0973612763ef49014ac04f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a541f5e48511a804377cee185dbc5e46d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a541f5e48511a804377cee185dbc5e46d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myNoBlanksBetweenParams</b></td></tr>
<tr class="separator:a541f5e48511a804377cee185dbc5e46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5fdb9252da76b359f59b1833cc64c7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5fdb9252da76b359f59b1833cc64c7f"></a>
<a class="el" href="classArFileParser.html">ArFileParser</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myParser</b></td></tr>
<tr class="separator:aa5fdb9252da76b359f59b1833cc64c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92e0a0b87973832a68183b9b6b6bb597"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92e0a0b87973832a68183b9b6b6bb597"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myParserCB</b></td></tr>
<tr class="separator:a92e0a0b87973832a68183b9b6b6bb597"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a726f4655a3a7d9240131c984e3e7f030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726f4655a3a7d9240131c984e3e7f030"></a>
std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myParsingListNames</b></td></tr>
<tr class="separator:a726f4655a3a7d9240131c984e3e7f030"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d1c201ba084189cee784d2baa46923f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d1c201ba084189cee784d2baa46923f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myPermissionAllowFactory</b></td></tr>
<tr class="separator:a5d1c201ba084189cee784d2baa46923f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70ebf5d67c25133d8d0aaf02df439f0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70ebf5d67c25133d8d0aaf02df439f0d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myPermissionSaveUnknown</b></td></tr>
<tr class="separator:a70ebf5d67c25133d8d0aaf02df439f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d0a3459b27b4e016d385ae29b27ec00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d0a3459b27b4e016d385ae29b27ec00"></a>
<a class="el" href="classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3">ArLog::LogLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myProcessFileCallbacksLogLevel</b></td></tr>
<tr class="separator:a7d0a3459b27b4e016d385ae29b27ec00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae00ae04c0786607e66c57166ed07bfc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae00ae04c0786607e66c57166ed07bfc9"></a>
std::multimap&lt; int, <a class="el" href="classArConfig_1_1ProcessFileCBType.html">ProcessFileCBType</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myProcessFileCBList</b></td></tr>
<tr class="separator:ae00ae04c0786607e66c57166ed07bfc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac81611336b45edfac134649a392641bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac81611336b45edfac134649a392641bf"></a>
<a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myRestartLevelNeeded</b></td></tr>
<tr class="separator:ac81611336b45edfac134649a392641bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac733472e3ea225469dbb695fa4667db2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac733472e3ea225469dbb695fa4667db2"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArConfig.html#ac733472e3ea225469dbb695fa4667db2">myRobotName</a></td></tr>
<tr class="memdesc:ac733472e3ea225469dbb695fa4667db2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Optional name of the robot with which the config is associated. <br /></td></tr>
<tr class="separator:ac733472e3ea225469dbb695fa4667db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be93eb8716cdba318ff5e46f30fc88e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5be93eb8716cdba318ff5e46f30fc88e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>mySaveUnknown</b></td></tr>
<tr class="separator:a5be93eb8716cdba318ff5e46f30fc88e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1f538be210a0f6ae790217b9ea3533d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1f538be210a0f6ae790217b9ea3533d"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>mySection</b></td></tr>
<tr class="separator:ad1f538be210a0f6ae790217b9ea3533d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6887ce2189e6dba7f6ac929de27e5558"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6887ce2189e6dba7f6ac929de27e5558"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>mySectionBroken</b></td></tr>
<tr class="separator:a6887ce2189e6dba7f6ac929de27e5558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2b454b8fae5c10bed311fe025ba27c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e2b454b8fae5c10bed311fe025ba27c"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mySectionCB</b></td></tr>
<tr class="separator:a6e2b454b8fae5c10bed311fe025ba27c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a0f4069be0d496903023ab8e0a44e78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a0f4069be0d496903023ab8e0a44e78"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>mySectionIgnored</b></td></tr>
<tr class="separator:a4a0f4069be0d496903023ab8e0a44e78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e2bda5ec80d069943fc0e5a2f7f3b4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e2bda5ec80d069943fc0e5a2f7f3b4f"></a>
std::list&lt; <a class="el" href="classArConfigSection.html">ArConfigSection</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mySections</b></td></tr>
<tr class="separator:a5e2bda5ec80d069943fc0e5a2f7f3b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec7786dfea7f80db3281017e683905a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec7786dfea7f80db3281017e683905a2"></a>
std::set&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mySectionsNotToParse</b></td></tr>
<tr class="separator:aec7786dfea7f80db3281017e683905a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9b84c0a2964443893f445e9061b0934"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b84c0a2964443893f445e9061b0934"></a>
std::list&lt; std::string &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>mySectionsToParse</b></td></tr>
<tr class="separator:ac9b84c0a2964443893f445e9061b0934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24d3d703177a1c71218cafaa2e12bab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae24d3d703177a1c71218cafaa2e12bab"></a>
<a class="el" href="classArConfig.html">ArConfig</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myTranslator</b></td></tr>
<tr class="separator:ae24d3d703177a1c71218cafaa2e12bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c910c9cf4ec36d3eb74642c1c740442"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c910c9cf4ec36d3eb74642c1c740442"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myUnknownCB</b></td></tr>
<tr class="separator:a1c910c9cf4ec36d3eb74642c1c740442"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a375fdb556d6edc32e0aa921e4f764906"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a375fdb556d6edc32e0aa921e4f764906"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myUsingSections</b></td></tr>
<tr class="separator:a375fdb556d6edc32e0aa921e4f764906"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38d480dcc0b4444ac34ce9dfb2e4478c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38d480dcc0b4444ac34ce9dfb2e4478c"></a>
<a class="el" href="classArRetFunctor3C.html">ArRetFunctor3C</a>&lt; bool, <a class="el" href="classArConfig.html">ArConfig</a>, <a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *, char *, size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myVersionCB</b></td></tr>
<tr class="separator:a38d480dcc0b4444ac34ce9dfb2e4478c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Stores configuration information which may be read to and from files or other sources. </p>
<p>The configuration is a set of parameters (or config arguments), organized into sections. Parameters contain a key or name (a short string), a value (which may be one of several types), a priority (important, normal, or trivial to most users), a longer description, and a display hint which suggests what kind of UI control might be most appropriate for the parameter. After adding a parameter to the configuration, its value may be changed when the configuration is loaded or reloaded from a file. Various program modules may register callbacks to be notified when a shared global configuration (such as the static <a class="el" href="classArConfig.html" title="Stores configuration information which may be read to and from files or other sources. ">ArConfig</a> object kept by the <a class="el" href="classAria.html" title="Contains global initialization, deinitialization and other global functions. ">Aria</a> class) is loaded or otherwise changed.</p>
<p>Classes dealing with more specialized kinds of config files inherit from this one.</p>
<p>Important methods in this class are: <a class="el" href="classArConfig.html#ad3aa76dcf6fd83874dda8ccb577415e0" title="Command to add a parameter to the given section with given priority. ">addParam()</a>, <a class="el" href="classArConfig.html#ab6632033992fd48cb2369350a749f0b8" title="Adds a callback to be invoked when the configuration is loaded or reloaded. ">addProcessFileCB()</a>, <a class="el" href="classArConfig.html#ae17ad7fed68efa382e79d2cc4b4e12cf" title="Removes a processedFile callback. ">remProcessFileCB()</a>, <a class="el" href="classArConfig.html#a3e14491304e22ded38de8ffcc203035a" title="Parse a config file. ">parseFile()</a>, <a class="el" href="classArConfig.html#af3c8626c844828f2ce632cc7027a7a67" title="Write out a config file. ">writeFile()</a>.</p>
<p>Usually, configuration data are read from and written to a file using <a class="el" href="classArConfig.html#a3e14491304e22ded38de8ffcc203035a" title="Parse a config file. ">parseFile()</a> and <a class="el" href="classArConfig.html#af3c8626c844828f2ce632cc7027a7a67" title="Write out a config file. ">writeFile()</a>, or are set by a remote client via ArNetworking. It is also possible to import configuration settings from an <a class="el" href="classArArgumentParser.html" title="Parse and store program command-line arguments for use by other ARIA classes. ">ArArgumentParser</a> (which, for example, may contain a program's command line arguments) using <a class="el" href="classArConfig.html#a9e01acebbebaf4f6c9dc01032c1016d2" title="Uses this argument parser after it parses a file before it processes. ">useArgumentParser()</a>.</p>
<dl class="section warning"><dt>Warning</dt><dd><a class="el" href="classArConfig.html" title="Stores configuration information which may be read to and from files or other sources. ">ArConfig</a> does not escape any special characters when writing or loading to/from a file. Therefore in general parameter names, values, section names, and comments must not contain characters which have special meaning in a config file, such as '#', ';', tab or newline. (see also <a class="el" href="classArFileParser.html" title="Class for parsing files more easily. ">ArFileParser</a>) Parameter names may have spaces, though by convention they generally do not. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#_a0">configExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="acf0b53be8ad35c4351396f86e36ebdbb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArConfig::ArConfig </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>baseDirectory</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>noBlanksBetweenParams</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ignoreBounds</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>failOnBadSection</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>saveUnknown</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">baseDirectory</td><td>a directory to search for files in </td></tr>
    <tr><td class="paramname">noBlanksBetweenParams</td><td>if there should not be blank lines between params in output </td></tr>
    <tr><td class="paramname">ignoreBounds</td><td>if this is true bounds checking will be ignored when the file is read in. this should ONLY be used by developers debugging </td></tr>
    <tr><td class="paramname">failOnBadSection</td><td>if this is true and there is a bad section, then parseFile will fail </td></tr>
    <tr><td class="paramname">saveUnknown</td><td>if this is true and there are unknown parameters or sections then they will be saved, if false then they will be ignored (can also be set with <a class="el" href="classArConfig.html#ac5a5dff0ebf4bf80d0861d419b4ed45f" title="Sets whether we save unknown items (if we don&#39;t save &#39;em we ignore &#39;em) ">setSaveUnknown()</a>) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a53ccb6d333853bd2678b2c769eb82381"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::addComment </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>comment</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em> = <code>&quot;&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>priority</em> = <code><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a11a1e48113dade987dbbc50383e13210">ArPriority::NORMAL</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Command to add a new comment to the given section with given priority. </p>
<p>Add a comment to a section.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">comment</td><td>Text of the comment. </td></tr>
    <tr><td class="paramname">sectionName</td><td>Name of the section to add the comment to. If the section does not exist, it will be created. </td></tr>
    <tr><td class="paramname">priority</td><td>Priority or importance. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The section name must not contain any characters with special meaning when saved and loaded from a config file, such as '#', ';', tab, or newline. The comment must not contain tab or newline, but '#' and ';' are OK within a comment. </dd></dl>

</div>
</div>
<a class="anchor" id="ad3aa76dcf6fd83874dda8ccb577415e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::addParam </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classArConfigArg.html">ArConfigArg</a> &amp;&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em> = <code>&quot;&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>priority</em> = <code><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a11a1e48113dade987dbbc50383e13210">ArPriority::NORMAL</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>displayHint</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a>&#160;</td>
          <td class="paramname"><em>restart</em> = <code>ArConfigArg::NO_RESTART</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Command to add a parameter to the given section with given priority. </p>
<p>Add a parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>Object containing key, description and value type of this parameter. This object will be copied. </td></tr>
    <tr><td class="paramname">sectionName</td><td>Name of the section to put this parameter in. </td></tr>
    <tr><td class="paramname">priority</td><td>Priority or importance of this parameter to a user. </td></tr>
    <tr><td class="paramname">displayHint</td><td>Suggest an appropriate UI control for editing this parameter's value. See <a class="el" href="classArConfigArg.html#a35025b88f24c2936354fdd0b51e6276a" title="Sets the display hint for this arg. ">ArConfigArg::setDisplayHint()</a> for description of display hint format. </td></tr>
    <tr><td class="paramname">restart</td><td>restart level </td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The parameter name and value must not contain any characters with special meaning when saved and loaded from a config file, such as '#', ';', tab, or newline. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a4">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae1b2c398c46607755d767d6e04c544b0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::addParamAsIs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classArConfigArg.html">ArConfigArg</a> &amp;&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a parameter that has all the other information on it already set. </p>
<p>Add a parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>Object containing key, description and value type of this parameter. This object will be copied.... it must already have the priority, display hint, restart level, and other things like that already set. </td></tr>
    <tr><td class="paramname">sectionName</td><td>Name of the section to put this parameter in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab6632033992fd48cb2369350a749f0b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::addProcessFileCB </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRetFunctor.html">ArRetFunctor</a>&lt; bool &gt; *&#160;</td>
          <td class="paramname"><em>functor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a callback to be invoked when the configuration is loaded or reloaded. </p>
<p>After a file has been read all the way these processFileCBs are called in the priority (higher numbers first)...</p>
<p>these are only called if there were no errors parsing the file or continueOnError was set to false when parseFile was called</p>
<p>The functor should return true if the config parsed was good (parseFile will return true) false if the config parsed wasn't (parseFile will return false)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">functor</td><td>the functor to call</td></tr>
    <tr><td class="paramname">priority</td><td>the functors are called in descending order, if two things have the same number the first one added is the first one called </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a9">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae9fcb23c40efd909070710986437017f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::addProcessFileCB </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *&#160;</td>
          <td class="paramname"><em>functor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a callback to be invoked when the configuration is loaded or reloaded.... </p>
<p>After a file has been read all the way these processFileCBs are called in the priority (higher numbers first)...</p>
<p>if you really want errors you should use addProcessFileWithErrorCB, this is just to catch mistakes</p>
<p>these are only called if there were no errors parsing the file or continueOnError was set to false when parseFile was called</p>
<p>The functor should return true if the config parsed was good (parseFile will return true) false if the config parsed wasn't (parseFile will return false)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">functor</td><td>the functor to call</td></tr>
    <tr><td class="paramname">priority</td><td>the functors are called in descending order, if two things have the same number the first one added is the first one called </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a66c611ea024ce60cb6bdb0a653787cd5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::addProcessFileWithErrorCB </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *&#160;</td>
          <td class="paramname"><em>functor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a callback to be invoked when the configuration is loaded or reloaded, which may also receive error messages. </p>
<p>This function has a different name than addProcessFileCB just so that if you mean to get this function but have the wrong functor you'll get an error.</p>
<p>The rem's are the same though since that shouldn't matter.</p>
<p>After a file has been read all the way these processFileCBs are called in the priority (higher numbers first)... these are only called if there were no errors parsing the file or continueOnError was set to false when parseFile was called</p>
<p>The functor should return true if the config parsed was good (parseFile will return true) false if the config parsed wasn't (parseFile will return false)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">functor</td><td>the functor to call (the char * and unsigned int should be used by the functor to put an error message into that buffer)</td></tr>
    <tr><td class="paramname">priority</td><td>the functors are called in descending order, if two things have the same number the first one added is the first one called </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1e501670b0155ff70f9a64f3d2950b8f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::addSection </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>categoryName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionDescription</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Command to add a section and its description to the specified category. </p>
<p>The category is expected to be one of the CATEGORY_ constants defined above. If the section already exists but has not yet been assigned to a category, then this method can be called to add it to the specified category. </p>

</div>
</div>
<a class="anchor" id="a2479e354d0f69029993dac715a9447b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::addSectionFlags </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>adds a flag to a section </p>
<p>Add a flag to a section.</p>
<p>If the section doesn't exist then it is created. </p><dl class="section warning"><dt>Warning</dt><dd>The section name and flags must not contain any characters with special meaning when saved and loaded from a config file, such as '#', ';', tab, or newline. </dd></dl>

</div>
</div>
<a class="anchor" id="a4348c2978086ece1e47d90131f597aca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArConfigSection.html">ArConfigSection</a> * ArConfig::findSection </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find the section with the given name. </p>
<dl class="section return"><dt>Returns</dt><dd>section object, or NULL if not found. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a23">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a22a15042a576239ca101acff6383361c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::list&lt; std::string &gt; ArConfig::getSectionNamesInCategory </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>categoryName</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the names of the sections that have been added to the specified category. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">categoryName</td><td>the char * name of the category for which to find the section names; if empty/null, then the method returns the names of all sections that have not been included in any category </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa61f1e6e522e34f40c067aee3d927fed"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::log </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>isSummary</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::list&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>sectionNameList</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>logPrefix</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Logs the config. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">isSummary</td><td>a bool set to true if only the section names and parameter counts should be logged; false to log detailed parameter information </td></tr>
    <tr><td class="paramname">sectionNameList</td><td>a list of the string section names to be logged; if NULL, then the data for all sections are logged </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a06f41407a74bbbb0b8a092c904bb8697"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::parseArgument </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>errorBuffer</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>errorBufferLen</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This parses the argument given (for parser or other use) </p>
<p>The extra string of the parser should be set to the command wanted, while the rest of the arg should be the arguments to the command.</p>
<p>Its case insensitive.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>Obtain parameter name from this object's "extra string" and value(s) from its argument(s).</td></tr>
    <tr><td class="paramname">errorBuffer</td><td>If this is NULL it is ignored, otherwise the string for the error is put into the buffer, the first word should be the parameter that has trouble</td></tr>
    <tr><td class="paramname">errorBufferLen</td><td>the length of <em>errorBuffer</em> </td></tr>
  </table>
  </dd>
</dl>
<p>MPL we'll want to do something here, but kathleen and i still have to work out what... </p>

</div>
</div>
<a class="anchor" id="a3e14491304e22ded38de8ffcc203035a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::parseFile </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>continueOnErrors</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>noFileNotFoundMessage</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>errorBuffer</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>errorBufferLen</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::list&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>sectionsToParse</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>highestPriority</em> = <code>ArPriority::FIRST_PRIORITY</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>lowestPriority</em> = <code><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a174495be77df7662d7d909b1212e9409">ArPriority::LAST_PRIORITY</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArConfigArg.html#a8a64fa6de67f3af8152cc323aae7d96f">ArConfigArg::RestartLevel</a> *&#160;</td>
          <td class="paramname"><em>restartLevelNeeded</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parse a config file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fileName</td><td>the file to load</td></tr>
    <tr><td class="paramname">continueOnErrors</td><td>whether to continue parsing if we get errors (or just bail)</td></tr>
    <tr><td class="paramname">noFileNotFoundMessage</td><td>if the file isn't found and this param is true it won't complain, otherwise it will</td></tr>
    <tr><td class="paramname">errorBuffer</td><td>If an error occurs and this is not NULL, copy a description of the error into this buffer</td></tr>
    <tr><td class="paramname">errorBufferLen</td><td>the length of <em>errorBuffer</em> </td></tr>
    <tr><td class="paramname">sectionsToParse</td><td>if NULL, then parse all sections; otherwise, a list of the section names that should be parsed (sections not in the list are ignored)</td></tr>
    <tr><td class="paramname">highestPriority</td><td>Any configuration settings with a priority before this are ignored</td></tr>
    <tr><td class="paramname">lowestPriority</td><td>Any configuration settings with a priority after this are ignored. <pre class="fragment">@param restartLevelNeeded for internal use, leave as NULL</pre> </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a21">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a632766d472027d18b36170bce1533133"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::parseSection </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>errorBuffer</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>errorBufferLen</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This parses the section change (for parser or other use) </p>
<p>The extra string of the parser should be set to the 'Section' command while the rest of the arg should be the arguments to the section command.</p>
<p>Its case insensitive.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>Should contain the 'Section' keyword as its "extra" string, and section name as argument(s).</td></tr>
    <tr><td class="paramname">errorBuffer</td><td>if this is NULL it is ignored, otherwise the string for the error is put into the buffer, the first word should be the parameter that has trouble</td></tr>
    <tr><td class="paramname">errorBufferLen</td><td>the length of the error buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aaeffee727cfec4250d5d5f56acb247c4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::parseUnknown </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArArgumentBuilder.html">ArArgumentBuilder</a> *&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>errorBuffer</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>errorBufferLen</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This parses an unknown argument (so we can save it) </p>
<p>The extra string of the parser should be set to the command wanted, while the rest of the arg should be the arguments to the command.</p>
<p>Its case insensitive.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>Obtain parameter name from this argument builder's "exra" string and value(s) from its argument(s).</td></tr>
    <tr><td class="paramname">errorBuffer</td><td>if this is NULL it is ignored, otherwise the string for the error is put into the buffer, the first word should be the parameter that has trouble</td></tr>
    <tr><td class="paramname">errorBufferLen</td><td>the length of the error buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af80da0483b51ee34e667b05a80bc2c4b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArConfig::processFile </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>for inheritors this is called after the file is processed </p>
<p>For classes that inherit from <a class="el" href="classArConfig.html" title="Stores configuration information which may be read to and from files or other sources. ">ArConfig</a> this function is called after parseFile and all of the processFileCBs are called... If you want to call something before the processFileCBs then just add a processFileCB... this is only called if there were no errors parsing the file or continueOnError was set to false when parseFile was called</p>
<dl class="section return"><dt>Returns</dt><dd>true if the config parsed was good (parseFile will return true) false if the config parsed wasn't (parseFile will return false) </dd></dl>

</div>
</div>
<a class="anchor" id="a61ebd397104ea0a3438cb828684a630f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::removeAllUnsetValues </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>isRemovingUnsetSectionsOnly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Removes unset values from the config. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">isRemovingUnsetSectionsOnly</td><td>a bool set to true if unset parameters should not be removed from sections that have any set parameters; false if all unset values should be removed </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae17ad7fed68efa382e79d2cc4b4e12cf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::remProcessFileCB </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRetFunctor.html">ArRetFunctor</a>&lt; bool &gt; *&#160;</td>
          <td class="paramname"><em>functor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes a processedFile callback. </p>
<p>Removes a processFileCB, see addProcessFileCB for details. </p>

</div>
</div>
<a class="anchor" id="a5a0b44d34a10b3acd9a97afadbcee2f1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::remProcessFileCB </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRetFunctor2.html">ArRetFunctor2</a>&lt; bool, char *, size_t &gt; *&#160;</td>
          <td class="paramname"><em>functor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes a processedFile callback. </p>
<p>Removes a processFileCB, see addProcessFileCB for details. </p>

</div>
</div>
<a class="anchor" id="a7795860c2b10aef1cd068fe46f417319"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::remSectionFlag </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>flag</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes a flag from a section. </p>
<p>Add a flag to a section.</p>
<p>If the section doesn't exist then it is created. </p>

</div>
</div>
<a class="anchor" id="ace70d5cfc31b309c2c02100d3cbf28a4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::setConfigName </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>configName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>robotName</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores an optional config and robot name to be used in log messages. </p>
<p>These names are used solely for log messages.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">configName</td><td>a char * descriptive name of the <a class="el" href="classArConfig.html" title="Stores configuration information which may be read to and from files or other sources. ">ArConfig</a> instance (e.g. Server or Default) </td></tr>
    <tr><td class="paramname">robotName</td><td>an optional char * identifier of the robot that has the config </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a948196938ca152e338133a66fd3416e4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::setPermissions </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>allowFactory</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>rememberUnknowns</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets permissions on some things. </p>
<p>This is more temporary than some of the others like 'setSaveUknown' and such, this should be called by anything that's going to parse the config... </p>

</div>
</div>
<a class="anchor" id="af464029663cdae8d46c20ad96536c801"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::setSectionComment </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sectionName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>comment</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the comment for a section. </p>
<p>Set the comment string associated with a section.</p>
<p>If the section doesn't exist then it is created. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>use addSection instead </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>The section name must not contain any characters with special meaning when saved and loaded from a config file, such as '#', ';', tab, or newline. The comment must not contain tab or newline, but '#' and ';' are OK within a comment. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a3">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a9e01acebbebaf4f6c9dc01032c1016d2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::useArgumentParser </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArArgumentParser.html">ArArgumentParser</a> *&#160;</td>
          <td class="paramname"><em>parser</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Uses this argument parser after it parses a file before it processes. </p>
<p>This argument parser the arguments in to check for parameters of this name, note that ONLY the first parameter of this name will be used, so if you have duplicates only the first one will be set. </p>

</div>
</div>
<a class="anchor" id="af3c8626c844828f2ce632cc7027a7a67"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArConfig::writeFile </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>append</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::set&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>alreadyWritten</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>writeExtras</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::list&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>sectionsToWrite</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>highestPriority</em> = <code>ArPriority::FIRST_PRIORITY</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>lowestPriority</em> = <code><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3a174495be77df7662d7d909b1212e9409">ArPriority::LAST_PRIORITY</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write out a config file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fileName</td><td>the name of the file to write out</td></tr>
    <tr><td class="paramname">append</td><td>if true then text will be appended to the file if it exists, otherwise any existing file will be overwritten.</td></tr>
    <tr><td class="paramname">alreadyWritten</td><td>if non-NULL, a list of strings that have already been written out, don't write it again if it's in this list; when something is written by this function, then it is put it into this list</td></tr>
    <tr><td class="paramname">writeExtras</td><td>if this is true then the priority, display hint, restart level, and other later extras of each parameter will also be written to the file, if it is false they will not be</td></tr>
    <tr><td class="paramname">sectionsToWrite</td><td>if NULL, then write all sections; otherwise, a list of the section names that should be written</td></tr>
    <tr><td class="paramname">highestPriority</td><td>the <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> that specifies the minimum (numerical) priority that a parameter must have in order to be written; not related to the writeExtras flag</td></tr>
    <tr><td class="paramname">lowestPriority</td><td>the <a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a> that specifies the maximum (numerical) priority that a parameter must have in order to be written; not related to the writeExtras flag </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="configExample_8cpp-example.html#a28">configExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a2cc699b7f26a88c18f1cdb7eee6b0a99"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::writeSection </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArConfigSection.html">ArConfigSection</a> *&#160;</td>
          <td class="paramname"><em>section</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::set&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>alreadyWritten</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>writeExtras</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>highestPriority</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPriority.html#aee18574a3aae3c790bd3dadc13cff9a3">ArPriority::Priority</a>&#160;</td>
          <td class="paramname"><em>lowestPriority</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write out a section. </p>
<p>clear out our written ones between sections </p>

</div>
</div>
<a class="anchor" id="a27b12a37c634f00269427d88717d75fe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArConfig::writeSectionResource </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArConfigSection.html">ArConfigSection</a> *&#160;</td>
          <td class="paramname"><em>section</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::set&lt; std::string &gt; *&#160;</td>
          <td class="paramname"><em>alreadyWritten</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write out a section in CSV format for translation. </p>
<p>clear out our written ones between sections </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArConfig.h</li>
<li>ArConfig.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArConfig.html">ArConfig</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
